﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Tipler.DataSetler;
using Tipler.Siniflar;
using Tipler.Enumlar;
using IKYSWeb.Siniflar;
using IsKurallari.Yetki;

namespace IKYSWeb.Yetki
{
    public partial class SifremiUnuttum : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                txtSifreYeni.Attributes.Add("autocomplete", "off");

                txtCiltNoSayi.Attributes.Add("CssClass", "inputSimgesiz");
                txtAileSiraNoSayi.Attributes.Add("CssClass", "inputSimgesiz");
                txtSiraNoSayi.Attributes.Add("CssClass", "inputSimgesiz");
                txtSifreYeni2.Attributes.Add("autocomplete", "off");
                if (Request.QueryString["AuthKey"] != null)
                {
                    YetkiIsKurali oYetki = new YetkiIsKurali();
                    FonksiyonSonuc<KullaniciDataSet> oSonuc = oYetki.KullaniciGetirbyActivationKey(Request.QueryString["AuthKey"].ToString());
                    if (oSonuc.Sonuc.Kullanici.Rows.Count > 0)
                    {
                        pnlYeniSifreBelirle.Visible = true;
                        pnlSifreHatirlat.Visible = false;
                    }
                    else
                    {
                        BasePage.MesajGoster(Page, "Kullanıcı Bulunamadı", BasePage.MesajTipiEnum.Uyari);
                        pnlYeniSifreBelirle.Visible = false;
                        pnlSifreHatirlat.Visible = true;
                    }
                }
                else
                {
                    pnlYeniSifreBelirle.Visible = false;
                    pnlSifreHatirlat.Visible = true;
                }
                IlPrmDataSet dsIl = null;// CachePage.IlPrmGetir();
                BasePage.ListDoldurFromDS(dsIl, ddlIl, dsIl.IlPrm.IlAdiColumn.ColumnName, dsIl.IlPrm.IlIDColumn.ColumnName, BasePage.ListeIlkYazı.Yok);
                //ddlIl_SelectedIndexChanged(null, null);
            }
        }
        //protected void ddlIl_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    IlcePrmDataSet.IlcePrmRow[] drIller = (IlcePrmDataSet.IlcePrmRow[])CachePage.IlcePrmGetir().IlcePrm.Select("IlID=" + ddlIl.SelectedValue + " AND SilindiMI=0");
        //    IlcePrmDataSet dsIlce = new IlcePrmDataSet();
        //    dsIlce.Merge(drIller);
        //    BasePage.ListDoldurFromDS(dsIlce, ddlIlce, dsIlce.IlcePrm.ILCEADIColumn.ColumnName, dsIlce.IlcePrm.ILCEIDColumn.ColumnName, BasePage.ListeIlkYazı.Yok);
        //}
        protected void btnTamam_Click(object sender, EventArgs e)
        {
            YetkiIsKurali oYetki = new YetkiIsKurali();
            FonksiyonSonuc<KullaniciDataSet> oSonuc = oYetki.KullanciGetirByEposta(txtEPosta.Text.Trim());
            KullaniciDataSet dsKullanici = oSonuc.Sonuc;
            if (dsKullanici.Kullanici.Rows.Count == 0)
            {
                BasePage.MesajGoster(Page, "Kullanıcı Bulunamadı. Mail Adresini Kontrol Ediniz.", BasePage.MesajTipiEnum.Uyari);
                return;
            }
            if (dsKullanici.Kullanici.Rows.Count > 1)
            {
                BasePage.MesajGoster(Page, "Bu mail adresine sahip birden fazla kullanıcı vardır. Lütfen eposta adresinizin güncellenmesi için ilgili birimle irtibata geçiniz", BasePage.MesajTipiEnum.Uyari);
                return;
            }
            KullaniciDataSet.KullaniciRow drKullanici = (KullaniciDataSet.KullaniciRow)dsKullanici.Kullanici.Rows[0];
            if (drKullanici.Durum != EnumKullaniciDurum.Aktif.GetHashCode())
            {
                BasePage.MesajGoster(Page, "Kullanıcı Aktif Değildir. İl Müftülüğü İle İrtibata Geçiniz.", BasePage.MesajTipiEnum.Uyari);
                return;
            }
            drKullanici.ActivationKey = BasePage.Md5SifrelemeString(Guid.NewGuid().ToString());

            if (dsKullanici.HasChanges())
            {
                FonksiyonSonuc<KullaniciDataSet> oSonucKayit = oYetki.KullaniciKaydet(dsKullanici, null,null);
                if (oSonuc.HataVarMi)
                {
                    throw new Exception(oSonuc.Hata);
                }
            }

            string sAbsolutePath = Request.ServerVariables["http_host"] + Request.ServerVariables["url"];
            Araclar.EPostaGonder("IKYS Kullanıcı Şifre Hatırlatma", "<br /><br />Sayın " + drKullanici["ISIM"].ToString() + ", <br /><br />Aşağıda gönderilen bağlantıyı tıklayarak hesabınızın yeni şifresini belirleyebilirsiniz. <br /><br /> <a href='" + Request.Url.Scheme + "://" + sAbsolutePath + "?AuthKey=" + drKullanici.ActivationKey + "'>Yeni şifrenizi belirlemek için tıklayınız</a>", txtEPosta.Text.Trim());

            BasePage.MesajGoster(Page, "Şifrenizi değiştirmek için gerekli bilgiler e-posta adresinize gönderildi", BasePage.MesajTipiEnum.Basari);
        }

        protected void btnYeniSifreBelirle_Click(object sender, EventArgs e)
        {
            YetkiIsKurali oYetki = new YetkiIsKurali();
            FonksiyonSonuc<KullaniciDataSet> oSonuc = oYetki.KullaniciGetirbyActivationKey(Request.QueryString["AuthKey"].ToString());
            if (oSonuc.Sonuc.Kullanici.Rows.Count == 0)
            {
                BasePage.MesajGoster(Page, "Kullanıcı Bulunamadı.", BasePage.MesajTipiEnum.Uyari);
                return;
            }

            KullaniciDataSet dsKullanici = oSonuc.Sonuc;
            KullaniciDataSet.KullaniciRow drKullanici = (KullaniciDataSet.KullaniciRow)dsKullanici.Kullanici.Rows[0];

            drKullanici.Sifre = BasePage.MD5Sifreleme(txtSifreYeni.Text);
            drKullanici.Durum = Convert.ToByte(EnumKullaniciDurum.Aktif.GetHashCode());
            drKullanici.ActivationKey = string.Empty;

            if (dsKullanici.HasChanges())
            {
                FonksiyonSonuc<KullaniciDataSet> oSonucKayit = oYetki.KullaniciKaydet(dsKullanici, null, null);
                if (oSonucKayit.HataVarMi)
                    throw new Exception(oSonucKayit.Hata);
            }
            BasePage.MesajGoster(Page, "Şifre Başarıyla Değiştirilmiştir.Giriş sayfasına dönmek için <a href=\"" + VirtualPathUtility.ToAbsolute("~/Login.aspx") + "\">tıklaynız.</a>", BasePage.MesajTipiEnum.Basari);

        }

    }
}